To generate a basic point plot you can use the plot() function.
plot(c(1:2))
This function perform a plot with two dimensions (Y vs. X). By default, the first vector provided will be considered X and the second Y. If only one vector is provided, Y will be the values of the vector and X their indices. Check this examples:
# Plot with x and y ...
plot(c(5:7),c(2,4,5))
# ... This is the same than:
plot(x=c(5:7),y=c(2,4,5))
# ... But this is not:
plot(y=c(5:7),x=c(2,4,5))
# Plot with only one vector:
plot(c(5:7))
If we make another plot, the previous one is removed
plot(c(1:2))
plot(c(1:3))
But you can open additional devices using the following functions, some of them system-dependent:
windows() #Windows
X11() #Unix
quartz() #Mac
dev.new() #All platforms
These functions accept arguments to customize the device. For example, width and heigth
dev.new(width=1,height=1)
dev.new(width=5,height=3)
Using these functions, we can do a second plot maintaining the former
plot(1:10)
dev.new()
plot(c(2,4,3,8))
If you want to mantain the second plot and add some points on it, use points()
points(x=3.5,y=2.5)
If you have several devs, the points will be added to the “ACTIVE” one. You can select dev using dev.set (Note the change in ACTIVE-INACTIVE status):
dev.set(1)
points(1.4,2)
You can close a device by clicking “X” or using the command:
dev.off()
Every plot has different areas (the plot itself, the margins, the axes, the axis labels, the box, the title,…). You can plot and customize every of this areas using the proper function (text(), mtext(), axis(), box(), main(),…):
Use layout() to divide the device and layout.show() to see the resulting layout.
layout(1:2)
layout.show(2)
plot(1:10)
plot(1:3)
If you want right-left instead of top-bottom or a more complex layout, use set a matrix accordingly.
layout(matrix(1:2,ncol=2))
layout.show(2)
plot(1:10)
plot(1:3)
# Larger matrices: 3 columns and 2 rows:
layout(matrix(1:6,ncol=3))
layout.show(6)
# More complex matrices: 3 columns and 2 rows:
M<-matrix(rep(c(rep(1,5),c(2,2,3,3,4)),5),nrow=5,byrow=T)
M
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] 1 1 1 1 1 2 2 3 3 4
## [2,] 1 1 1 1 1 2 2 3 3 4
## [3,] 1 1 1 1 1 2 2 3 3 4
## [4,] 1 1 1 1 1 2 2 3 3 4
## [5,] 1 1 1 1 1 2 2 3 3 4
layout(M)
layout.show(4)
There are several ways. You can save the plot in the ACTIVE device as a pdf file using:
dev.copy2pdf(file="my.plot_layout.pdf")
And there are other functions for saving the ACTIVE device using other formats:
win.metafile("mygraph.wmf") #windows metafile
png("mygraph.png") #png file
jpeg("mygraph.jpg") #jpeg file
bmp("mygraph.bmp") #bmp file
postscript("mygraph.ps") #postscript file
Alternatively, you can produce the plot directly to a file. For example, using the pdf() function will generate a pdf file in your computer. From that point, all the plotting functions will be applied to this file. You will not be able to open the file (and see your plot) unless you close the conection between the R and the file using dev.off(). Here is an example:
# first create the pdf and then plot "on it"
pdf("mygraph.pdf")
plot(1:2)
# Nothing happens, but a file is created.
# However, you can't open it
dev.off()
# Now you can
There are multiple functions to perform different plots. Many of them share arguments to set particular issues -such as colors (col), size (cex),..- and other arguments are specific of every function.
In this section we briefly describe some of the functions (and few of their argruments) to perform plots.
Let’s explore some options of plots using the bumpus dataset. The first step is to import and visualize the data:
bumpus <- read.csv("bumpus.csv")
str(bumpus)
## 'data.frame': 136 obs. of 13 variables:
## $ subject : int 1 1 2 2 3 3 4 4 5 5 ...
## $ sex : Factor w/ 2 levels "f","m": 2 2 2 2 2 2 2 2 2 2 ...
## $ age : Factor w/ 3 levels "","a","y": 2 2 2 2 2 2 2 2 2 2 ...
## $ survived: logi TRUE FALSE FALSE TRUE TRUE FALSE ...
## $ TL : int 154 165 160 160 155 161 154 162 156 163 ...
## $ AE : int 241 240 245 252 243 249 245 246 247 250 ...
## $ WT : num 24.5 26.5 26.1 26.9 26.9 25.6 24.3 25.9 24.1 25.5 ...
## $ BHL : num 31.2 31 32 30.8 30.6 32.3 31.7 32.3 31.5 32.5 ...
## $ HL : num 17.4 18.7 18.7 18.7 18.6 ...
## $ FL : num 17 17.9 18 18 17.9 ...
## $ TTL : num 26 27.8 28.2 30 29.2 ...
## $ SW : num 14.9 15.4 15.5 15.3 15.3 ...
## $ SKL : num 21.1 21.5 21.4 21.4 21.5 ...
As mentioned above, if only one variable is selected, it is plotted as Y and X is an index
plot(bumpus$TL)
Logical are coerced
plot(bumpus$survived)
With two variables:
layout(matrix(1:2,ncol=2))
plot(bumpus$TL, bumpus$AE)
# Note that the order is X Y
plot(bumpus$AE~bumpus$TL)
# Note that the order is Y X
The scatterplot also works with large dataframes:
# The entire bumpus dataset
plot(bumpus)
# A subset
plot(bumpus[,c("TL", "AE", "BHL", "SKL")])
# This is exactly the same
pairs(~TL+AE+BHL+SKL, data=bumpus)
See ?hist for details.
hist(bumpus$TL)
hist(bumpus$TL, main="Histogram of total length", xlab="Total length")
hist(bumpus$TL, main="Histogram of total length", xlab="Total length",
breaks=20)
See ?boxplot for details
boxplot(bumpus)
boxplot(bumpus[,7:13])
boxplot(bumpus$TL)
boxplot(bumpus$TL~bumpus$survived)
boxplot(bumpus$TL~bumpus$survived, main="Boxplot of TL in relation to survival", horizontal=T)
bx.bumpus <- boxplot(bumpus$TL~bumpus$survived, plot=F)
bx.bumpus
## $stats
## [,1] [,2]
## [1,] 152 153.0
## [2,] 158 156.0
## [3,] 161 159.0
## [4,] 163 160.5
## [5,] 167 166.0
## attr(,"class")
## FALSE
## "integer"
##
## $n
## [1] 64 72
##
## $conf
## [,1] [,2]
## [1,] 160.0125 158.1621
## [2,] 161.9875 159.8379
##
## $out
## numeric(0)
##
## $group
## numeric(0)
##
## $names
## [1] "FALSE" "TRUE"
bxp(bx.bumpus, main="Boxplot of TL in relation to survival", horizontal=T)
See ?barplot for details
survived <- table(bumpus$survived)
survived
##
## FALSE TRUE
## 64 72
survived <- survived / nrow(bumpus)
survived
##
## FALSE TRUE
## 0.4705882 0.5294118
barplot(survived)
barplot(survived, horiz=T)
survivedbysex <- table(bumpus$sex, bumpus$survived) / nrow(bumpus)
survivedbysex
##
## FALSE TRUE
## f 0.2058824 0.1544118
## m 0.2647059 0.3750000
barplot(survivedbysex, main="Survived birds by sex", col=c("red", "blue"))
barplot(survivedbysex, main="Survived birds by sex", col=c("red", "blue"),
beside=T)
See ?pie for details
sex.surv <- paste(bumpus$sex, bumpus$survived, sep="_")
fr.bumpus <- table(sex.surv)/length(sex.surv)
pie(fr.bumpus)
pie(fr.bumpus,
labels=c("F - died", "F - lived", "M - died", "M- lived"),
main="Percentages of survival by sex",
col=c("darkred", "red", "darkblue", "blue"))
Plots can be built by adding layers. As usually occur with R, there are different ways of doing the same thing. For example, you can represent points as circles connected by lines following these three approaches:
xx <- 1:100
set.seed(123)
yy <- rnorm(100)
# 1.- Plot points and add lines:
plot(xx, yy)
lines(xx,yy)
# 2.- Plot lines and add points:
plot(xx, yy,type="l")
points(xx, yy)
# 3.- Using the argument type="o" (overlapped)
plot(xx, yy,type="o")
# NOTE: There are other options, the default is "p" (points)
plot(xx, yy,type="p")
plot(xx, yy,type="l")
plot(xx, yy,type="b")
plot(xx, yy,type="h")
Linear regressions and curves can also be added as layers:
# adding regressions
plot(bumpus$TL, bumpus$AE)
fit <- lm(AE ~ TL, data = bumpus)
abline(fit, col='red')
hist(bumpus$TL, main="Histogram of total length", xlab="Total length",
breaks=20, freq=F)
lines(density(bumpus$TL)) # Add a Kernel density plot
plot(density(bumpus$TL), main="Kernel Density of Total Length")
polygon(density(bumpus$TL), col="grey" , border="blue", lwd=2)
curve(dnorm(x, mean=mean(bumpus$TL), sd=sd(bumpus$TL)), col="red", lwd=2, lty=2,xlim=range(bumpus$TL)) # Add a normal curve
plot(density(bumpus$TL), main="Kernel Density of Total Length")
polygon(density(bumpus$TL), col="grey" , border="blue", lwd=2)
curve(dnorm(x, mean=mean(bumpus$TL), sd=sd(bumpus$TL)), add=T, col="red", lwd=2,
lty=2) # Add a normal curve
plot(bumpus$TL, bumpus$AE) # Check the axis dimensions
range(bumpus$TL)
## [1] 152 167
range(bumpus$AE)
## [1] 230 256
#dev.new()
plot.new()
plot.window(c(150, 170), c(220, 260))
axis(1)
axis(2)
box()
title(main="A plot from scratch", xlab="Total Length", ylab="Alar Extent")
text(bumpus$TL, bumpus$AE, bumpus$sex)
points(160, 225, col='red')
text(160, 225, "I want to write something here!")
points(152, 256, col='red')
text(152, 256, "<- not centered! Where the arrow points!", pos=4)
text(160, 218.5, "Can I write outside?")
mtext("Yes, you can write outside here..", side=1, line=4)
mtext("... also here", side=3)
Almost anything you want to control in R plotting is available through par()
?par
layout(matrix(1:4, nrow=2, byrow=T))
plot(bumpus$HL~bumpus$TL)
# POINT STYLE ####
# Point size
# Half the default value
plot(bumpus$HL~bumpus$TL, cex=0.5)
# Larger than default
plot(bumpus$HL~bumpus$TL, cex=1.5)
# Depending on
plot(bumpus$HL~bumpus$TL, cex=10*(log(bumpus$TL)-5),col="blue")
# Point colour (see ColorChart.pdf and execute):
colors()
## [1] "white" "aliceblue" "antiquewhite"
## [4] "antiquewhite1" "antiquewhite2" "antiquewhite3"
## [7] "antiquewhite4" "aquamarine" "aquamarine1"
## [10] "aquamarine2" "aquamarine3" "aquamarine4"
## [13] "azure" "azure1" "azure2"
## [16] "azure3" "azure4" "beige"
## [19] "bisque" "bisque1" "bisque2"
## [22] "bisque3" "bisque4" "black"
## [25] "blanchedalmond" "blue" "blue1"
## [28] "blue2" "blue3" "blue4"
## [31] "blueviolet" "brown" "brown1"
## [34] "brown2" "brown3" "brown4"
## [37] "burlywood" "burlywood1" "burlywood2"
## [40] "burlywood3" "burlywood4" "cadetblue"
## [43] "cadetblue1" "cadetblue2" "cadetblue3"
## [46] "cadetblue4" "chartreuse" "chartreuse1"
## [49] "chartreuse2" "chartreuse3" "chartreuse4"
## [52] "chocolate" "chocolate1" "chocolate2"
## [55] "chocolate3" "chocolate4" "coral"
## [58] "coral1" "coral2" "coral3"
## [61] "coral4" "cornflowerblue" "cornsilk"
## [64] "cornsilk1" "cornsilk2" "cornsilk3"
## [67] "cornsilk4" "cyan" "cyan1"
## [70] "cyan2" "cyan3" "cyan4"
## [73] "darkblue" "darkcyan" "darkgoldenrod"
## [76] "darkgoldenrod1" "darkgoldenrod2" "darkgoldenrod3"
## [79] "darkgoldenrod4" "darkgray" "darkgreen"
## [82] "darkgrey" "darkkhaki" "darkmagenta"
## [85] "darkolivegreen" "darkolivegreen1" "darkolivegreen2"
## [88] "darkolivegreen3" "darkolivegreen4" "darkorange"
## [91] "darkorange1" "darkorange2" "darkorange3"
## [94] "darkorange4" "darkorchid" "darkorchid1"
## [97] "darkorchid2" "darkorchid3" "darkorchid4"
## [100] "darkred" "darksalmon" "darkseagreen"
## [103] "darkseagreen1" "darkseagreen2" "darkseagreen3"
## [106] "darkseagreen4" "darkslateblue" "darkslategray"
## [109] "darkslategray1" "darkslategray2" "darkslategray3"
## [112] "darkslategray4" "darkslategrey" "darkturquoise"
## [115] "darkviolet" "deeppink" "deeppink1"
## [118] "deeppink2" "deeppink3" "deeppink4"
## [121] "deepskyblue" "deepskyblue1" "deepskyblue2"
## [124] "deepskyblue3" "deepskyblue4" "dimgray"
## [127] "dimgrey" "dodgerblue" "dodgerblue1"
## [130] "dodgerblue2" "dodgerblue3" "dodgerblue4"
## [133] "firebrick" "firebrick1" "firebrick2"
## [136] "firebrick3" "firebrick4" "floralwhite"
## [139] "forestgreen" "gainsboro" "ghostwhite"
## [142] "gold" "gold1" "gold2"
## [145] "gold3" "gold4" "goldenrod"
## [148] "goldenrod1" "goldenrod2" "goldenrod3"
## [151] "goldenrod4" "gray" "gray0"
## [154] "gray1" "gray2" "gray3"
## [157] "gray4" "gray5" "gray6"
## [160] "gray7" "gray8" "gray9"
## [163] "gray10" "gray11" "gray12"
## [166] "gray13" "gray14" "gray15"
## [169] "gray16" "gray17" "gray18"
## [172] "gray19" "gray20" "gray21"
## [175] "gray22" "gray23" "gray24"
## [178] "gray25" "gray26" "gray27"
## [181] "gray28" "gray29" "gray30"
## [184] "gray31" "gray32" "gray33"
## [187] "gray34" "gray35" "gray36"
## [190] "gray37" "gray38" "gray39"
## [193] "gray40" "gray41" "gray42"
## [196] "gray43" "gray44" "gray45"
## [199] "gray46" "gray47" "gray48"
## [202] "gray49" "gray50" "gray51"
## [205] "gray52" "gray53" "gray54"
## [208] "gray55" "gray56" "gray57"
## [211] "gray58" "gray59" "gray60"
## [214] "gray61" "gray62" "gray63"
## [217] "gray64" "gray65" "gray66"
## [220] "gray67" "gray68" "gray69"
## [223] "gray70" "gray71" "gray72"
## [226] "gray73" "gray74" "gray75"
## [229] "gray76" "gray77" "gray78"
## [232] "gray79" "gray80" "gray81"
## [235] "gray82" "gray83" "gray84"
## [238] "gray85" "gray86" "gray87"
## [241] "gray88" "gray89" "gray90"
## [244] "gray91" "gray92" "gray93"
## [247] "gray94" "gray95" "gray96"
## [250] "gray97" "gray98" "gray99"
## [253] "gray100" "green" "green1"
## [256] "green2" "green3" "green4"
## [259] "greenyellow" "grey" "grey0"
## [262] "grey1" "grey2" "grey3"
## [265] "grey4" "grey5" "grey6"
## [268] "grey7" "grey8" "grey9"
## [271] "grey10" "grey11" "grey12"
## [274] "grey13" "grey14" "grey15"
## [277] "grey16" "grey17" "grey18"
## [280] "grey19" "grey20" "grey21"
## [283] "grey22" "grey23" "grey24"
## [286] "grey25" "grey26" "grey27"
## [289] "grey28" "grey29" "grey30"
## [292] "grey31" "grey32" "grey33"
## [295] "grey34" "grey35" "grey36"
## [298] "grey37" "grey38" "grey39"
## [301] "grey40" "grey41" "grey42"
## [304] "grey43" "grey44" "grey45"
## [307] "grey46" "grey47" "grey48"
## [310] "grey49" "grey50" "grey51"
## [313] "grey52" "grey53" "grey54"
## [316] "grey55" "grey56" "grey57"
## [319] "grey58" "grey59" "grey60"
## [322] "grey61" "grey62" "grey63"
## [325] "grey64" "grey65" "grey66"
## [328] "grey67" "grey68" "grey69"
## [331] "grey70" "grey71" "grey72"
## [334] "grey73" "grey74" "grey75"
## [337] "grey76" "grey77" "grey78"
## [340] "grey79" "grey80" "grey81"
## [343] "grey82" "grey83" "grey84"
## [346] "grey85" "grey86" "grey87"
## [349] "grey88" "grey89" "grey90"
## [352] "grey91" "grey92" "grey93"
## [355] "grey94" "grey95" "grey96"
## [358] "grey97" "grey98" "grey99"
## [361] "grey100" "honeydew" "honeydew1"
## [364] "honeydew2" "honeydew3" "honeydew4"
## [367] "hotpink" "hotpink1" "hotpink2"
## [370] "hotpink3" "hotpink4" "indianred"
## [373] "indianred1" "indianred2" "indianred3"
## [376] "indianred4" "ivory" "ivory1"
## [379] "ivory2" "ivory3" "ivory4"
## [382] "khaki" "khaki1" "khaki2"
## [385] "khaki3" "khaki4" "lavender"
## [388] "lavenderblush" "lavenderblush1" "lavenderblush2"
## [391] "lavenderblush3" "lavenderblush4" "lawngreen"
## [394] "lemonchiffon" "lemonchiffon1" "lemonchiffon2"
## [397] "lemonchiffon3" "lemonchiffon4" "lightblue"
## [400] "lightblue1" "lightblue2" "lightblue3"
## [403] "lightblue4" "lightcoral" "lightcyan"
## [406] "lightcyan1" "lightcyan2" "lightcyan3"
## [409] "lightcyan4" "lightgoldenrod" "lightgoldenrod1"
## [412] "lightgoldenrod2" "lightgoldenrod3" "lightgoldenrod4"
## [415] "lightgoldenrodyellow" "lightgray" "lightgreen"
## [418] "lightgrey" "lightpink" "lightpink1"
## [421] "lightpink2" "lightpink3" "lightpink4"
## [424] "lightsalmon" "lightsalmon1" "lightsalmon2"
## [427] "lightsalmon3" "lightsalmon4" "lightseagreen"
## [430] "lightskyblue" "lightskyblue1" "lightskyblue2"
## [433] "lightskyblue3" "lightskyblue4" "lightslateblue"
## [436] "lightslategray" "lightslategrey" "lightsteelblue"
## [439] "lightsteelblue1" "lightsteelblue2" "lightsteelblue3"
## [442] "lightsteelblue4" "lightyellow" "lightyellow1"
## [445] "lightyellow2" "lightyellow3" "lightyellow4"
## [448] "limegreen" "linen" "magenta"
## [451] "magenta1" "magenta2" "magenta3"
## [454] "magenta4" "maroon" "maroon1"
## [457] "maroon2" "maroon3" "maroon4"
## [460] "mediumaquamarine" "mediumblue" "mediumorchid"
## [463] "mediumorchid1" "mediumorchid2" "mediumorchid3"
## [466] "mediumorchid4" "mediumpurple" "mediumpurple1"
## [469] "mediumpurple2" "mediumpurple3" "mediumpurple4"
## [472] "mediumseagreen" "mediumslateblue" "mediumspringgreen"
## [475] "mediumturquoise" "mediumvioletred" "midnightblue"
## [478] "mintcream" "mistyrose" "mistyrose1"
## [481] "mistyrose2" "mistyrose3" "mistyrose4"
## [484] "moccasin" "navajowhite" "navajowhite1"
## [487] "navajowhite2" "navajowhite3" "navajowhite4"
## [490] "navy" "navyblue" "oldlace"
## [493] "olivedrab" "olivedrab1" "olivedrab2"
## [496] "olivedrab3" "olivedrab4" "orange"
## [499] "orange1" "orange2" "orange3"
## [502] "orange4" "orangered" "orangered1"
## [505] "orangered2" "orangered3" "orangered4"
## [508] "orchid" "orchid1" "orchid2"
## [511] "orchid3" "orchid4" "palegoldenrod"
## [514] "palegreen" "palegreen1" "palegreen2"
## [517] "palegreen3" "palegreen4" "paleturquoise"
## [520] "paleturquoise1" "paleturquoise2" "paleturquoise3"
## [523] "paleturquoise4" "palevioletred" "palevioletred1"
## [526] "palevioletred2" "palevioletred3" "palevioletred4"
## [529] "papayawhip" "peachpuff" "peachpuff1"
## [532] "peachpuff2" "peachpuff3" "peachpuff4"
## [535] "peru" "pink" "pink1"
## [538] "pink2" "pink3" "pink4"
## [541] "plum" "plum1" "plum2"
## [544] "plum3" "plum4" "powderblue"
## [547] "purple" "purple1" "purple2"
## [550] "purple3" "purple4" "red"
## [553] "red1" "red2" "red3"
## [556] "red4" "rosybrown" "rosybrown1"
## [559] "rosybrown2" "rosybrown3" "rosybrown4"
## [562] "royalblue" "royalblue1" "royalblue2"
## [565] "royalblue3" "royalblue4" "saddlebrown"
## [568] "salmon" "salmon1" "salmon2"
## [571] "salmon3" "salmon4" "sandybrown"
## [574] "seagreen" "seagreen1" "seagreen2"
## [577] "seagreen3" "seagreen4" "seashell"
## [580] "seashell1" "seashell2" "seashell3"
## [583] "seashell4" "sienna" "sienna1"
## [586] "sienna2" "sienna3" "sienna4"
## [589] "skyblue" "skyblue1" "skyblue2"
## [592] "skyblue3" "skyblue4" "slateblue"
## [595] "slateblue1" "slateblue2" "slateblue3"
## [598] "slateblue4" "slategray" "slategray1"
## [601] "slategray2" "slategray3" "slategray4"
## [604] "slategrey" "snow" "snow1"
## [607] "snow2" "snow3" "snow4"
## [610] "springgreen" "springgreen1" "springgreen2"
## [613] "springgreen3" "springgreen4" "steelblue"
## [616] "steelblue1" "steelblue2" "steelblue3"
## [619] "steelblue4" "tan" "tan1"
## [622] "tan2" "tan3" "tan4"
## [625] "thistle" "thistle1" "thistle2"
## [628] "thistle3" "thistle4" "tomato"
## [631] "tomato1" "tomato2" "tomato3"
## [634] "tomato4" "turquoise" "turquoise1"
## [637] "turquoise2" "turquoise3" "turquoise4"
## [640] "violet" "violetred" "violetred1"
## [643] "violetred2" "violetred3" "violetred4"
## [646] "wheat" "wheat1" "wheat2"
## [649] "wheat3" "wheat4" "whitesmoke"
## [652] "yellow" "yellow1" "yellow2"
## [655] "yellow3" "yellow4" "yellowgreen"
# Point type (see pch.png and execute):
plot(1:25,pch=1:25)
# Depending on the shape, col will affect the line or the background:
plot(1:25,pch=1:25,col="red")
# Some of the shapes may be filled with different colors using bg.
plot(1:25,pch=1:25,col="red",bg="blue")
# In addition, you can use any character as pch:
plot(1:25,pch=c(letters[1:18],"@","*","#","$","%","&","~"),col="red",bg="blue")
# Going back to the bumpus
layout(matrix(1:6,ncol=3,byrow=T))
plot(bumpus$HL~bumpus$TL)
plot(bumpus$HL~bumpus$TL, cex=1.25, col="red", pch=23)
# Point background colour
plot(bumpus$HL~bumpus$TL, cex=1.25, col="red", pch=23, bg="black")
# Plotting by group
plot(bumpus$HL~bumpus$TL, cex=1.25, col="red", pch=23, bg=bumpus$sex)
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23,
bg=ifelse(bumpus$sex=="f", "red", "blue"))
# Line thickness
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23,
bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2)
# AXES STYLE ####
# Axes titles
layout(matrix(1:4, nrow=2, byrow=T))
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23,
bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
xlab="Total lenght", ylab="Head length")
# Axes label font size
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23,
bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
xlab="Total lenght", ylab="Head length",
cex.lab=1.5)
# Axes font types
# For labels
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23,
bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
xlab="Total lenght", ylab="Head length",
cex.lab=1.25, font.lab=2)
# For axis values
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23,
bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
xlab="Total lenght", ylab="Head length",
cex.lab=1.25, font.lab=2, cex.axis=0.8, font.axis=4)
# Suppressing the axes
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23,
bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
xlab="Total lenght", ylab="Head length",
cex.lab=1.25, font.lab=2, xaxt="n")
# Custom axis plotting
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23,
bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
xlab="Total lenght", ylab="Head length",
cex.lab=1.25, font.lab=2, xaxt="n")
# There is no x-axis at this point. Let's create it:
axis(1, at=c(155, 160, 165), labels=c("small", "medium", "large"),
font.axis=2, cex.lab=1.5, font.lab=2)
# EXTENT, BOX, AND BACKGROUND ####
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23,
bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
xlab="Total lenght", ylab="Head length",
cex.lab=1.25, font.lab=2, cex.axis=0.8,
xlim=c(145, 170), ylim=c(15, 25))
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23,
bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
xlab="Total lenght", ylab="Head length",
cex.lab=1.25, font.lab=2, bty="l")
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23,
bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
xlab="Total lenght", ylab="Head length",
cex.lab=1.25, font.lab=2)
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23,
bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
xlab="Total lenght", ylab="Head length",
cex.lab=1.25, font.lab=2, bty="7")
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23,
bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
xlab="Total lenght", ylab="Head length",
cex.lab=1.25, font.lab=2, bty="u")
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23,
bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
xlab="Total lenght", ylab="Head length",
cex.lab=1.25, font.lab=2, bty="n")
# USING par()
layout(matrix(1:2, nrow=1, byrow=T))
par(bg="yellow")
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23,
bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
xlab="Total lenght", ylab="Head length",
cex.lab=1.25, font.lab=2, bty="n")
par(family="Times")
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23,
bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
xlab="Total lenght", ylab="Head length",
cex.lab=1.25, font.lab=2, bty="n")
layout(matrix(1:2, nrow=1, byrow=T))
# Setting both, family and bg:
par(family="Times", bg="white")
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23,
bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
xlab="Total lenght", ylab="Head length",
cex.lab=1.25, font.lab=2, bty="n")
#Setting the margins
par(mar=c(0,0,0,0))
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23,
bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
xlab="Total lenght", ylab="Head length",
cex.lab=1.25, font.lab=2, bty="n")
# Plot margins
layout(matrix(1:4, nrow=2, byrow=T))
par(family="Times", bg="white", mar=c(5, 5, 0, 0))
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23,
bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
xlab="Total lenght", ylab="Head length",
cex.lab=1.25, font.lab=2, bty="n")
# Axis line and label spacing
par(family="Times", bg="white", mar=c(5, 5, 0, 0), mgp=c(2, 0.5, 0))
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23,
bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
xlab="Total lenght", ylab="Head length",
cex.lab=1.25, font.lab=2, bty="n")
par(family="Times", bg="white", mar=c(5, 5, 0, 0), mgp=c(2, 0.5, 0.2))
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23,
bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
xlab="Total lenght", ylab="Head length",
cex.lab=1.25, font.lab=2, bty="n")
par(family="Times", bg="white", mar=c(5, 5, 0, 0), mgp=c(2, 0.5, 0.5))
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23,
bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
xlab="Total lenght", ylab="Head length",
cex.lab=1.25, font.lab=2, bty="]")
# Plot size
layout(1)
par(family="Times", bg="white", mar=c(5, 5, 0, 0), mgp=c(2, 0.5, 0.2),
pin=c(1.5, 1.5))
plot(bumpus$HL~bumpus$TL, cex=1.25, col="black", pch=23,
bg=ifelse(bumpus$sex=="f", "red", "blue"), lwd=2,
xlab="Total lenght", ylab="Head length",
cex.lab=1.25, font.lab=2, bty="n")